Bitrix: что делать, когда истек пробный период и сайт заблокировался

Битрикс, сам по себе ни плох и не хорош. Бодренький середнячок для решений проблем богатых буратино (это когда Клиент ни в какую не хочет бесплатную ЦМС, а хочет за деньги, да еще и дорого). Но есть у него один огромный минус — демонстрационного периода часто не хватает на то, чтобы успеть и верстку сделать и все капризы заказчика воплотить и все протестить и сдать вовремя. Сначала вылезает сообщение о том, что осталось две недели (в сети полно предложений о том, как это фиксить, но они бесполезны — спрятать надпись не значит решить проблему, через две недели сайт все равно заблокируется), затем происходит блокировка сайта. Обиднее всего, когда до сдачи остаются считанные дни. Я в такой ситуации произвожу повторную установку демки и переношу на нее все изменения. С Битриксом работаю давно и уже с первого раза научился все измененное хранить в строгой иерерахичности, так, чтобы на новую демку все просто перезалить.

И не потому, что люблю геморрой, а потому что Bitrix является авторским продуктом и его нуление преследуется по Закону. А я не хочу сидеть за реальной решеткой за виртуальные нолики и единички. Но читатели блога все совершеннолетние, и решения им принимать самим, так что я, пожалуй, расскажу об одном способе, вычитанном у хакеров.

Итак, вы увидели проклятую всеми богами магическую надпись: «Срок работы пробной версии продукта истек. Вы можете купить полнофункциональную версию продукта на сайте www.1c-bitrix.ru»

И либо идете и устанавливаете демку снова, как я, либо читаете дальше.

Сии письмена неведомые хранятся в файле: /bitrix/modules/main/include.php
Открыв его вы ужаснетесь — ни слова по эльфийски, все сплошь на исковерканном мордорском!
Тем, кто как и я ни слова не сечет в мордорском поможет утилита PHP-деобфускатор phpCodeBeautifier. Она есть и для божественного линуха и под мерзопакостную венду.
Дальше объясняю, как пользоваться виндусятникам, линуксоиды проблем с этим не испытают и сами до всего додумаются.
Качаете утилитку, распаковываете на хард, в ту же папку суете и файл с письменами (include.php). в командной строке (Пуск=>Выполнить=>cmd) выполняете команду (не забудьте сначала перейти на диск и в каталог, куда распаковали утилитку. Например, если распаковали на диск D, в папку phpCB-1.0.1-windows, значит сначала выполняете команду cd D: , затем cd phpCB-1.0.1-windows):

phpcb include.php > include.nomordor.php

Открываете новый полученный файл (include.nomordor.php) и смотрите. М-да, не эльфйский, конечно, но уже и не диалект мордорского. Кое-как читать можно.
Этим файлом теперь можно без проблем заменить старый, обфусцированный include.php (не забудьте переименовать include.nomordor.php в include.php).

Все, все приготовления выполнены, начинаем шаманские пляски. Необходимо локализовать и устранить заклинание. Как его локализовать? Понятно как, методом проб и ошибок. Открываем файл и пишем куда-нибудь, например в 8 строку:

die('A Elbereth Gilthoniel');

Перезаливаем файл, смотрим, если выдало A Elbereth Gilthoniel, значит заклинание находится ниже, а если Срок работы пробной версии продукта истек. Вы можете купить полнофункциональную версию продукта на сайте www.1c-bitrix.ru — значит выше. А если выдаст ошибку, значит кто-то по недосмотру запихнул die вовнутрь функции или класса. Делать этого не следует! Если вы не в состоянии найти где заканчивается та или иная функция, смотрите по отступам. Функции, классы, переменные — все начинаются с новой строки без отступа. Вот перед ними и нужно вставлять. Удаляете свою запись и вписываете в новое место. И так, шаг за шагом, вы локализуете заклинание. У хакеров оно оказалось в 123 строке, у меня в 472, оказалось циклом и выглядело вот так:

for($_2130954366 = min(48, 0, 16), $_1920236676 = ($GLOBALS['____1305649026'][130]() < $GLOBALS['____1305649026'][131]((245 * 2-490), min(58, 0, 19.3333333333), (145 * 2-290), round(0 + 1.66666666667 + 1.66666666667 + 1.66666666667), round(0 + 0.5 + 0.5), round(0 + 502.5 + 502.5 + 502.5 + 502.5)) || $_1590193538 <= round(0 + 5 + 5)), $_819650879 = ($_1590193538 < $GLOBALS['____1305649026'][132]((934-2 * 467), min(54, 0, 18), min(10, 0, 3.33333333333), Date(___696774976(419)), $GLOBALS['____1305649026'][133](___696774976(420)) - $_573936718, $GLOBALS['____1305649026'][134](___696774976(421)))); $_2130954366 < round(0 + 5 + 5), $_1920236676 || $_819650879 || $_1590193538 != $_82412589; $_2130954366++, $GLOBALS['_____817943630'][70]($_2121131415));

Закомментируйте его:

//for($_2130954366 = min(48, 0, 16), $_1920236676 = ($GLOBALS['____1305649026'][130]() < $GLOBALS['____1305649026'][131]((245 * 2-490), min(58, 0, 19.3333333333), (145 * 2-290), round(0 + 1.66666666667 + 1.66666666667 + 1.66666666667), round(0 + 0.5 + 0.5), round(0 + 502.5 + 502.5 + 502.5 + 502.5)) || $_1590193538 <= round(0 + 5 + 5)), $_819650879 = ($_1590193538 < $GLOBALS['____1305649026'][132]((934-2 * 467), min(54, 0, 18), min(10, 0, 3.33333333333), Date(___696774976(419)), $GLOBALS['____1305649026'][133](___696774976(420)) - $_573936718, $GLOBALS['____1305649026'][134](___696774976(421)))); $_2130954366 < round(0 + 5 + 5), $_1920236676 || $_819650879 || $_1590193538 != $_82412589; $_2130954366++, $GLOBALS['_____817943630'][70]($_2121131415));

И перезалейте на сервер. Сайт снова заработает в нормальном режиме.

И-и-и-и, Помните!
Продукты битрикса охраняются законами об авторских правах, применяя данный материал как-то иначе, кроме ознакомления, вы действуете на свой страх и риск!

Update 13.02.2014 от Вячеслава: В последней версии битрикса потребовалось закомментить в этом файле 2 места, чтобы заработало

Запись опубликована в рубрике Bitrix с метками , . Добавьте в закладки постоянную ссылку.

10 комментариев: Bitrix: что делать, когда истек пробный период и сайт заблокировался

  1. NoBitrix говорит:

    Здравствуйте, подскажите что делать если командная строка, на попытку выполнения команды, сообщает:
    «phpcb» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

    В командной строке перешел в папку d:\Downloads\phpCB-1.0.1-windows>
    и ввел: phpcb inclide.php > includenomordor.php

    Еще такой момент, процитирую вас — «И либо идете и устанавливаете демку снова, как я, либо читаете дальше.»
    Подскажите как это сделать, а то у меня не получилось.
    Пробовал так: установил демку на локалку, вытащил из ее базы значение admin_passwordh и вставил его в файле /bitrix/modules/main/admin/define.php для сайта с истекшим периодом, после чего очистил папку /bitrix/managed_cache/
    Может чего не так правлю.. Битрикс 12 версии. Буду благодарен за развернутый ответ, можно на e-mail.

    • Danila говорит:

      Здравствуйте, попробую ответить я, вместо автора, т.к. он у нас не частый гость.
      Для начала, скопируйте файл phpCB.exe в корень диска D — это единственный файл из которого состоит программа и переименуйте его в phpcb.exe (т.е. нужно сделать все буквы маленькими). Затем туда же, в корень диска D закиньте файл include.php
      Для перехода на диск D в cmd нужно выполнить команду:
      D:
      И затем следующую команду выполнить в таком виде: phpcb.exe include.php > include.nomordor.php
      Если выдаст ту же ошибку, тогда вот так:
      d:\phpcb.exe include.php > include.nomordor.php

      Если не получится, пишите, будем разбираться дальше.
      Обычно ошибку, указанную Вами, windows выдает, когда не может найти путь до исполняемого файла. Возможно, он находится в еще какой-то вложенной папке, а указанная мною процедура позволит избежать вложенности. Корень диска D — куда уж выше :)

  2. Дмитрий говорит:

    У меня 131 строка
    //for($_815941930 = min(150, 0, 50), $_424791745 = ($GLOBALS[‘____1560248496′][63]() < $GLOBALS['____1560248496'][64]((131 * 2-262), (248 * 2-496), (1168 / 2-584), round(0 + 1.25 + 1.25 + 1.25 + 1.25), round(0 + 0.5 + 0.5), round(0 + 2010)) || $_1056412642 <= round(0 + 5 + 5)), $_1146237057 = ($_1056412642 < $GLOBALS['____1560248496'][65](min(78, 0, 26), min(128, 0, 42.6666666667), (166 * 2-332), Date(___2024891632(111)), $GLOBALS['____1560248496'][66](___2024891632(112)) — $_618400051, $GLOBALS['____1560248496'][67](___2024891632(113)))); $_815941930 < round(0 + 3.33333333333 + 3.33333333333 + 3.33333333333), $_424791745 || $_1146237057 || $_1056412642 != $_1888033228; $_815941930++, $GLOBALS['_____2082233760'][11]($_101815395));

  3. L говорит:

    Спасибо ) Сие заклинание буду использовать только в мирных целях, а в старости наколдую разработчикам битрикса много золотых монет!

  4. Вячеслав говорит:

    В последней версии битрикса потребовалось закомментить в этом файле 2 места, чтобы заработало

  5. Анна говорит:

    Для версии 14.0.5 у меня не вышло воспользоваться предложенным способом. Может конечно я что то не так делаю, но получается функция с ифом здоровенная , и если комментировать массив в if, то все перестает работать вообще
    function ___784745248($_981544583){ static $_1696727640 = false;if ($_1696727640 == false) $_1696727640 = array(

  6. Петр Блажук говорит:

    Здравствуйте. Спасибо Вам за статью. Таким образом получилось зайти в админку, а сам сайт по прежнему выдает ошибку…

  7. Илья говорит:

    при вводе пути в командную строку пишет: отказано в доступе

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>